import java.lang.reflect.Array;
import java.util.Arrays;

public class Main {
    //在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
    public static int sum(int a, int b) {
        return a+b;
    }
    public static int sum(int a, int b, int c) {
        return a + sum(b, c);
    }

    //在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？
    public static int max(int a, int b) {
        return a>b ? a : b;
    }
    public static int max(int a, int b, int c) {
        return a > max(b,c) ? a : max(b,c);
    }

    //递归求 N 的阶乘
    public static int fac(int n) {
        if(n == 1) {
            return 1;
        }
        return n * fac(n-1);
    }

    //递归求 1 + 2 + 3 + ... + 10
    public static int add(int n) {
        if(n == 1) {
            return 1;
        }
        return n + add(n - 1);
    }

    //按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)    （递归）按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)    （递归）
    public static void fun(int n) {
        if(n <= 9) {
            System.out.println(n);
            return;
        }
        fun(n / 10);
        System.out.println(n % 10);
        return;
    }

    //写一个递归方法，输入一个非负整数，返回组成它的数字之和
    public static int fun1(int n) {
        if(n <= 9) {
            return n;
        }
        return (n % 10) + fun1(n / 10);
    }

    //递归求斐波那契数列的第 N 项
    public static int fib(int n) {
        if(n == 1 || n == 2) {
            return 1;
        }
        return fib(n - 1) +fib(n - 2);
    }

    //递归求解汉诺塔问题

    public static void move(char a,char c) {
        System.out.printf(a+"----"+c+"  ");
    }

    //从A(起始)移到C（目的）借助b（中转）;
    public static void han(int n, char A, char C,char B) {
        if(n == 1) {
            System.out.print( A+"---" +C + "  ");
            return;
        }
        han(n - 1, A, B, C);
        move(A,C);
        han(n - 1, B, A, C);

    }
    public static void main(String[] args) {
       // han( 2, 'A', 'C','B');
        int [] a = {1,2,3};
        String ret = Arrays.toString(a);
        System.out.println(Arrays.toString(a));
    }
}